home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / emodls01.lha / emodules / translator42 / phoneme.e < prev   
Text File  |  1980-07-16  |  3KB  |  91 lines

  1. OPT OSVERSION=37
  2. OPT PREPROCESS
  3.  
  4. /*
  5. *-- AutoRev header do NOT edit!
  6. *
  7. *   Project         :   Translate the text into phoneme form
  8. *   File            :   phoneme.e
  9. *   Copyright       :   © 1996 Piotr Gapinski
  10. *   Author          :   Piotr Gapinski
  11. *   Creation Date   :   05.01.96
  12. *   Current version :   1.0
  13. *   Translator      :   AmigaE v3.1+
  14. *
  15. *   REVISION HISTORY
  16. *
  17. *   Date         Version         Comment
  18. *   --------     -------         ------------------------------------------
  19. *
  20. *-- REV_END --*
  21. */
  22.  
  23. MODULE 'dos/dos','dos/dosextens',
  24.        'libraries/translator','translator',
  25.        'tools/exceptions'
  26.  
  27. #define PROGRAMNAME    'phoneme'
  28. #define PROGRAMVERSION '$VER: phoneme 1.0 (05.01.96)'
  29.  
  30. ENUM  ERR_OK,ERR_NOLIB,ERR_ARGS,ERR_NOFILE,ERR_EMPTY,ERR_NOMEM,ERR_READ,
  31.       ERR_TRANSLATOR,ERR_CTRLC
  32. ENUM  ARG_FILE,ARG_ACCENT,NUMARGS
  33. CONST BUFFSIZE=$40
  34.  
  35. PROC main() HANDLE
  36.   DEF rdargs,args[NUMARGS]:LIST,templ,file,accent,
  37.       char,buf,size,handle=0
  38.  
  39.   templ:='FILE/A,ACCENT/F'
  40.   IF (rdargs:=ReadArgs(templ,args,NIL))=NIL THEN Raise(ERR_ARGS)
  41.   file:=args[ARG_FILE]
  42.   accent:=IF args[ARG_ACCENT]=NIL THEN 'POLSKI' ELSE args[ARG_ACCENT]
  43.   IF (translatorbase:=OpenLibrary(TRANSLATORNAME,TRANSLATORVERSION))=NIL THEN
  44.      Raise(ERR_NOLIB)
  45.  
  46.   IF (handle:=Open(file,MODE_OLDFILE))=NIL THEN Raise(ERR_NOFILE)
  47.   Seek(handle,0,OFFSET_END)
  48.   size:=Seek(handle,0,OFFSET_BEGINNING)
  49.   IF size=0 THEN Raise(ERR_EMPTY)
  50.   IF (buf:=New(BUFFSIZE))=NIL THEN Raise(ERR_NOMEM)
  51.  
  52.   IF (SetAccent(accent))=0 THEN accent:='Accent file not found...\n'
  53.   WriteF('  FILE: \s\nACCENT: \s\n',file,accent)
  54.  
  55.   WHILE (size:=Read(handle,char,1))<>0
  56.     IF (Translate(char,1,buf,BUFFSIZE))<>0 THEN Raise(ERR_TRANSLATOR)
  57.     WriteF('\s',buf)
  58.     IF CtrlC() THEN Raise(ERR_CTRLC)
  59.   ENDWHILE
  60.   WriteF('\n')
  61. EXCEPT
  62.   IF rdargs THEN FreeArgs(rdargs)
  63.   IF handle THEN Close(handle)
  64.   IF translatorbase THEN CloseLibrary(translatorbase)
  65.   IF exception
  66.     SELECT exception
  67.     CASE ERR_ARGS
  68.       WriteF('Bad args!!! (try "\s ?")\n',PROGRAMNAME)
  69.     CASE ERR_NOLIB
  70.       WriteF('You need "\s" V\d!\n',TRANSLATORNAME,TRANSLATORVERSION)
  71.     CASE ERR_NOFILE
  72.       WriteF('File "\s" not found!\n',file)
  73.     CASE ERR_EMPTY
  74.       WriteF('File "\s" is empty!\n',file)
  75.     CASE ERR_NOMEM
  76.       WriteF('No free memory!\n')
  77.     CASE ERR_READ
  78.       WriteF('Error while reading file "\s"\n',file)
  79.     CASE ERR_TRANSLATOR
  80.       WriteF('Translator error!\n')
  81.     CASE ERR_CTRLC
  82.       WriteF('*** user break!\n')
  83.     DEFAULT
  84.       report_exception()
  85.       WriteF('LEVEL: main()\n')
  86.     ENDSELECT
  87.   ENDIF
  88. ENDPROC
  89.  
  90. CHAR PROGRAMVERSION,0
  91.